//package com.artisan.provider.config;
//
//import com.artisan.provider.utils.JWTUtils;
//import com.artisan.provider.contanent.Contanents;
//import io.jsonwebtoken.Claims;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.web.servlet.HandlerInterceptor;
//import org.springframework.web.servlet.ModelAndView;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//
//public class TokenInterceptor implements HandlerInterceptor
//{
//
//    @Autowired
//    private StringRedisTemplate jedisPool;
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
//    {
//
//        try {
//            response.setCharacterEncoding("UTF-8");
//            response.setContentType("text/html;charset=utf-8");
//            String token = request.getHeader("Authorization");
//            String TimeSystemCurrent = request.getHeader("TimeSystemCurrent");
//           // String sign = request.getHeader("sign");
//           // String strs = encodeData(sign);
//           // System.out.println(strs);
//           // System.out.println(sign);
//            System.out.println(TimeSystemCurrent);
//
//            if(token == null){
//                response.getWriter().print("用户未登录，请登录后操作");
//                return false;
//            }
//
//            if (TimeSystemCurrent == null || TimeSystemCurrent.isEmpty() || TimeSystemCurrent==""){
//                return false;
//            }
//
//            //解密
//            String s = token.replaceAll("", "");
//            Claims claims = JWTUtils.checkJWT(s);
//            Object id = claims.get("id");
//
//            String token2 = jedisPool.opsForValue().get(Contanents.JWT_LOGIN+id);
//            if(token2 == null){
//                response.getWriter().print("登录状态已过期，请重新登录");
//                return false;
//            }
//
//            if(!token.equals(token2)){
//                response.getWriter().print("登录有误");
//                return false;
//            }
//
//            Long SystemTime = System.currentTimeMillis();
//            Long TimeSystem = Long.valueOf(TimeSystemCurrent);
//
//            System.out.println("系统时间:"+SystemTime);
//            // systemTime - clientTime > 5  false
//            Integer sum = (Integer.valueOf((int) (SystemTime/1000)) - Integer.valueOf((int) (TimeSystem/1000)));
//            if(sum >= 208){
//                System.out.println("访问接口地址有误");
//                return false;
//            }
//
//        }catch (Exception e){
//            System.out.println("认证解析异常");
//            return false;
//        }
//
//        return true;
//    }
//
//    public static String encodeData(String str) {
//        try {
//            MessageDigest md = MessageDigest.getInstance("SHA-256");
//            md.update(str.getBytes());
//            byte byteData[] = md.digest();
//            //将字节转换为十六进制格式方法一
//            StringBuffer sb = new StringBuffer();
//            for (int i = 0; i < byteData.length;
//                 i++) {
//
//                sb.append(Integer.toString((byteData[i] & 0xff) +
//                        0x100, 16).substring(1));
//            }
//            System.out.println("Hex format : " +
//                    sb.toString());
//            return sb.toString();
//        } catch (NoSuchAlgorithmException e) {
//            e.printStackTrace();
//            return null;
//        }
//    }
//
//    @Override
//    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//
//    }
//
//    @Override
//    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//
//    }
//}
